iT邦幫忙

2024 iThome 鐵人賽

DAY 12
0
Python

30天導讀 Python Software Foundation 官方翻譯文件系列 第 12

Day 11 -資料結構~導讀 Python Software Foundation 教學文件

  • 分享至 

  • xImage
  •  

本文為 Python Software Foundation -->Python 3.12.6 說明文件 -->Python教學文件 --> 5. 資料結構 --> 5.2. del 陳述式 --> 5.3. Tuples 和序列 (Sequences) 繁體中文版導讀文章

  • 內容為官方文章搭配 Colab 實測 demo 圖片,想了解實測請點擊Colab

資料結構

這個章節將會更深入的介紹一些你已經學過的東西的細節上,並且加入一些你還沒有接觸過的部分。

5.2. del 陳述式

有一個方法可以藉由索引而不是值來刪除 list 中的項目:del 陳述式。這和 pop() method 傳回一個值不同,del 陳述式可以用來刪除 list 中的片段或者清空整個 list(我們之前藉由指派一個空的 list 給想刪除的片段來完成這件事)。例如:
https://ithelp.ithome.com.tw/upload/images/20240926/201626730uqtMaWPZr.png

del 也可以用來刪除整個變數:
https://ithelp.ithome.com.tw/upload/images/20240926/20162673Mo2YzrPydT.png
刪除之後,對 a 的參照將會造成錯誤(至少在另一個值又被指派到它之前)。我們將在後面看到更多關於 del 的其他用法。

5.3. Tuples 和序列 (Sequences)

我們看到 list 和字串 (string) 有許多共同的特性,像是索引操作 (indexing) 以及切片操作 (slicing) 。他們是序列資料類型中的兩個例子(請參考Sequence Types --- list, tuple, range)。由於 Python 是個持續發展中的語言,未來可能還會有其他的序列資料類型加入。接著要介紹是下一個標準序列資料類型:tuple。

一個 tuple 是由若干個值藉由逗號區隔而組成,例如:
https://ithelp.ithome.com.tw/upload/images/20240926/20162673zvNHMJrhaB.png

如同我們看到的,被輸出的 tuple 總是以括號包著,如此巢狀的 tuple 才能被正確的直譯 (interpret);他們可以是以被括號包著或不被包著的方式當作輸入,雖然括號的使用常常是有其必要的(譬如此 tuple 是一個較大的運算式的一部分)。指派東西給 tuple 中的個別項目是不行的,但是可以建立含有可變物件(譬如 list)的 tuple。

雖然 tuple 和 list 看起來很類似,但是他們通常用在不同的情況與不同目的。 tuple 是 immutable(不可變的),通常儲存異質的元素序列,並可經由拆解 (unpacking)(請參考本節後段)或索引 (indexing) 來存取(或者在使用 namedtuples 的時候藉由屬性 (attribute) 來存取)。List 是 mutable(可變的),其元素通常是同質的且可藉由疊代整個 list 來存取。

一個特別的議題是,關於建立一個含有 0 個或 1 個項目的 tuple:語法上會採納一些奇怪的用法。空的 tuple 藉由一對空括號來建立;含有一個項目的 tuple 經由一個值加上一個逗點來建立(用括號把一個單一的值包住是不夠的)。醜,但有效率。例如:
https://ithelp.ithome.com.tw/upload/images/20240927/20162673cpeJVTIVvv.png

陳述式 t = 12345, 54321, 'hello!' 就是一個 tuple packing 的例子:12345,54321 和 'hello!' 一起被放進 tuple 裡。反向操作也可以:
x, y, z = t

這個正是我們所說序列拆解 (sequence unpacking),可運用在任何位在等號右邊的序列。序列拆解要求等號左邊的變數數量必須與等號右邊的序列中的元素數量相同。注意,多重指派就只是 tuple packing 和序列拆解的結合而已。


上一篇
Day 10 -資料結構~導讀 Python Software Foundation 教學文件
系列文
30天導讀 Python Software Foundation 官方翻譯文件12
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言